home *** CD-ROM | disk | FTP | other *** search
/ Singles Flirt Up Your Life! (German) / Singles Flirt Up Your Life.iso / data1.cab / Statemachine / repairChar.lua < prev    next >
Text File  |  2004-01-29  |  5KB  |  184 lines

  1. -- repair state machine
  2. beginStateMachine()
  3.     
  4.     onEnter(function(msg)
  5.         local object = getStateObjectFromID(msg.sender);
  6.         storeStateObject("object", object);
  7.         
  8.         if (object) then
  9.             -- object does exist
  10.             if (object.isBroken()) then
  11.                 -- object does exist
  12.                 if (getParent().isOneActionPointLocked(object)) then
  13.                     -- action point is locked
  14.                     getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  15.                     sendMsg("emoThink", getParent().walkSO);
  16.                     exitStateMachine();
  17.                 else
  18.                     getParent().lockActionPoints(object);
  19.                 end
  20.             else
  21.                 -- object is not broken anymore
  22.                 getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  23.                 sendMsg("emoThink", getParent().walkSO);
  24.                 exitStateMachine();
  25.             end
  26.         else
  27.             -- object does not exist anymore
  28.             getParent().setEmoticon(EMOTICON_CANNOT, EMOTICON_DELAY);
  29.             sendMsg("emoThink", getParent().walkSO);
  30.             exitStateMachine();
  31.         end
  32.         
  33.         freeHands(getParent());
  34.                 
  35.     end )
  36.     
  37.     onExit(function(msg)
  38. --        local object = retrieveStateObject("object");
  39. --        if (object) then
  40. --            getParent().unlockActionPoints(object);
  41. --            getParent().stopAllActivities(object);
  42. --            removeStateObject("object");
  43. --        end
  44.         
  45.         unlockAll("object");                
  46.         freeHands(getParent());
  47.         
  48.     end )
  49.     
  50.     
  51.     state("repairStart")
  52.     
  53.         onEnter(function(msg)
  54.         
  55.             local screwdriver = getParent().loadGameObject("StandardGO", "screwdriver");
  56.             getParent().attachRightObjectHolder(screwdriver);
  57.         
  58.             startAnimation("repairStart");
  59.                         
  60.             sendDelayedMsgThis("dropScrewdriver", 8320);
  61.             sendDelayedMsgThis("grabHammer", 9000);
  62.         end )
  63.         
  64.         
  65.         
  66.         
  67.         onMsg("dropScrewdriver", function(msg)
  68.             freeHands(getParent());
  69.         end )    
  70.         
  71.         onMsg("grabHammer", function(msg)
  72.             local hammer = getParent().loadGameObject("StandardGO", "hammer");
  73.             getParent().attachRightObjectHolder(hammer);
  74.         end )    
  75.         
  76.         
  77.     
  78.         onMsg("end", function(msg)
  79.             if (testCancel()) then
  80.                 exitStateMachine();
  81.             else
  82.                 setState("repair");
  83.             end
  84.         end )    
  85.     
  86.     
  87.     
  88.     state("repair")
  89.     
  90.         onEnter(function(msg)
  91.             local object = retrieveStateObject("object");
  92.             local repair = getParent().startActivity("repair", object);
  93.             local length, scale = getActivityLength(repair);
  94.             storeData("scale", scale);
  95.             
  96.             startAnimation("repairLoop", false, scale);
  97.             sendDelayedMsgThis("hammerSound", 900);
  98.             sendDelayedMsgThis("hammerSound", 1500);
  99.             sendDelayedMsgThis("hammerSound", 2000);
  100.             
  101.             
  102.             sendDelayedMsgThis("complete", length);
  103.         end )
  104.     
  105.         onMsg("hammerSound", function(msg)
  106.             getParent().playSound("hammer3");
  107.         end )    
  108.  
  109.         onMsg("complete", function(msg)
  110.             local object = retrieveStateObject("object");
  111.             getParent().stopActivity("repair", object);
  112.             --object.setBroken(false);
  113.             storeData("finished", true);
  114.             setState("repairEnd");
  115.         end )    
  116.  
  117.         onMsg("end", function(msg)
  118.             
  119.             if testCancel() then
  120.                 local object = retrieveStateObject("object");
  121.                 getParent().stopActivity("repair", object);
  122.                 setState("repairEnd");
  123.             else
  124.                 startAnimation("repairLoop", false, retrieveData("scale"));
  125.                 sendDelayedMsgThis("hammerSound", 900);
  126.                 sendDelayedMsgThis("hammerSound", 1500);
  127.                 sendDelayedMsgThis("hammerSound", 2000);
  128.             end
  129.         end )    
  130.         
  131.         
  132.     state("repairEnd")
  133.     
  134.         onEnter(function(msg)
  135.         
  136.             sendDelayedMsgThis("dropHammer", 1360);
  137.             sendDelayedMsgThis("grabScrewdriver", 2280);
  138.         
  139.             startAnimation("repairEnd");            
  140.         end )
  141.         
  142.         
  143.         onMsg("dropHammer", function(msg)
  144.             getParent().playSound("dropHeavyStuff");
  145.             freeHands(getParent());
  146.         end )    
  147.         
  148.         onMsg("grabScrewdriver", function(msg)
  149.             local screwdriver = getParent().loadGameObject("StandardGO", "screwdriver");
  150.             getParent().attachRightObjectHolder(screwdriver);
  151.         end )    
  152.         
  153.         
  154.     
  155.         onMsg("end", function(msg)
  156.             freeHands(getParent());
  157.             if (retrieveData("finished", false) == true) then       
  158.                 local obj = retrieveStateObject("object");
  159.                 obj.setBroken(FALSE);            
  160.                 local char = getParent();
  161.                 if (char.hasSkill("repair3")) then          
  162.                     obj.setBrokenValue(0.0);     
  163.                 elseif  (char.hasSkill("repair2")) then     
  164.                     obj.setBrokenValue(0.25);    
  165.                 elseif  (char.hasSkill("repair1")) then
  166.                     obj.setBrokenValue(0.5);    
  167.                 end
  168.             end;
  169.             exitAndGoAway();
  170.         end )    
  171.     
  172.     
  173.         onExit(function(msg)
  174.             local object = retrieveStateObject("object");
  175.             
  176.             --notify mission that the character repaired the particular object 
  177.             getParent().sendMsg(
  178.                 "repaired",
  179.                 getParent().getGameObjectServer().mission, 
  180.                 tostring(object.getUniqueID()) );
  181.         end )
  182.         
  183. endStateMachine()
  184.